package grafica;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

/**
 * Clase Lector.
 * Lee los mapas del juego, con extensión .map.
 * @author Nehuen Antiman,Javier Amorosi.
 *
 */
public class Lector {
	
	 private File archivo;
	 private FileReader fichero;
	 private BufferedReader br;
	
	 /**
	  * Constructor de la clase Lector. 
	  * Permite seleccionar un archivo a través de una ruta.
	  * @throws IOException en caso de que la ruta no sea válida. 
	  */
	 public Lector() throws IOException{		
		 boolean sig=false;
			while(!sig){
				String ruta = obtenerRuta();
				if (ruta == null)
					throw new IOException();
				archivo = new File(ruta);
				String ext = getExtension(archivo);
				if(ext.equals("map"))
					sig=true;
				else
				JOptionPane.showMessageDialog(null,"Seleccione un archivo con extension .map ");					
			} 
	 }
	 
	 
	 private String obtenerRuta(){		 
		 String toR=null;
		 JFileChooser selector = new JFileChooser();
		 selector.setFileSelectionMode(JFileChooser.FILES_ONLY);
		 int resultado = selector.showOpenDialog(selector);
		 if(resultado != JFileChooser.CANCEL_OPTION)	{
			 if(selector.getSelectedFile().isFile())
				 toR=selector.getSelectedFile().getAbsolutePath();
	 	 }
	 	return toR;
	 }
	 
	 private String getExtension(File f) {
		 String ext = null;
		    String s = f.getName();
		    int i = s.lastIndexOf('.');
		    if (i > 0 &&  i < s.length() - 1) {
		        ext = s.substring(i+1).toLowerCase();
		    }
		    return ext;
	 }
	 
	 /**
	  * Retorna el String que representa el mapa.
	  * @return el String que representa el mapa.
	  * @throws IOException en caso de haber algún error relacionado a la lectura del archivo.
	  */
	 public String generarCadena() throws IOException{
		 String toR="";
		 String aux = null;
		 fichero = new FileReader(archivo);
		 br = new BufferedReader(fichero);
		 while ((aux = br.readLine())!=null) {
			   toR=toR+aux+"\n";
		 }
		 return toR;
	 }
}
